﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using WW.Cad.Model;


namespace StuertzDatenbank
{
    public class Profil
    {


        private int ID;
        private List<Hersteller> Hersteller;
        private List<Serie> Serie;
        private String Bezeichnung;
        private Decimal HoeheAbs;
        private Decimal TiefeAbs;
        private List<VerwendungPosition> VerwendungPosition;
        private bool RahmenFenster;
        private List<Bearbeitungen> Bearbeitungen;
        private List<Beschichtungen> Beschichtungen;
        private List<Fuellmaterial> Fuellmaterial;
        private List<Dichtung> Dichtung;
        private List<Werkstoff> Werkstoff;
        private String Kommentar;
        private Benutzer ErstelltVon;
        private DateTime ErstelltWann;
        private Benutzer FreigabeVon;
        private DateTime FreigabeWann;
        private Status Status;
        private List<Restriktion> Restriktion;
        private DxfModel Zeichnung;
        private Benutzer LetzterBearbeiter;
      

        public Profil(int Id)
        {

            ID = new int();
            ID = Id;
            Hersteller = new List<Hersteller>();
            Serie = new List<Serie>();
            Bezeichnung = "";
            HoeheAbs = new Decimal();
            TiefeAbs = new Decimal();
            VerwendungPosition = new List<VerwendungPosition>();
            RahmenFenster = new bool();
            Bearbeitungen = new List<Bearbeitungen>();
            Beschichtungen = new List<Beschichtungen>();
            Fuellmaterial = new List<Fuellmaterial>();
            Dichtung = new List<Dichtung>();
            Werkstoff = new List<Werkstoff>();
            Kommentar = "";
            ErstelltVon = new Benutzer(-1);
            ErstelltWann = new DateTime(1753, 01, 1, 12, 00, 0);
            FreigabeVon = new Benutzer(-1);
            FreigabeWann = new DateTime(1753, 01, 1, 12, 00, 0);
          
            Status = new Status(-1);
            Restriktion = new List<Restriktion>();
            Zeichnung = new DxfModel();

        }



        /// <summary>
        /// stellt die ID des Profils ein
        /// </summary>
        /// <param name="i"></param>///
        public void setID(int i)

        { this.ID = i; }

        /// <summary>
        /// gibt die ID des aktulen Profils wieder
        /// </summary>
        /// <returns></returns>
        public int getID()
        {
            return this.ID;
        }

        /// <summary>
        /// stellt die Herstelleliste ein
        /// </summary>
        /// <param name="Herstellerliste"></param>
        public void setHersteller(List<Hersteller> Herstellerliste)
        {
            this.Hersteller = Herstellerliste;
        }

        /// <summary>
        /// gibt eine Liste mit allen Herstellern wieder 
        /// </summary>
        /// <returns></returns>
        public List<Hersteller> getAlleHersteller()
        {
            return this.Hersteller;
        }

        /// <summary>
        /// gibt genau den Hersteller wieder aus der liste an der Stelle i 
        /// </summary>
        /// <param name="i"></param>
        /// <returns></returns>
        public Hersteller getHerstellerausliste(int i)
        {
            return this.Hersteller.ElementAt(i);
        }

        /// <summary>
        /// stellt die Serie-Liste ein
        /// </summary>
        /// <param name="Serieliste"></param>
        public void setSerie(List<Serie> Serieliste)
        {
            this.Serie = Serieliste;

        }

        /// <summary>
        /// gibt die Serien des Profils als Liste Wieder
        /// </summary>
        /// <returns></returns>
        public List<Serie> getSerie()

        { return this.Serie; }

        /// <summary>
        /// setzt die Bezeichnung des Profils fest
        /// </summary>
        /// <param name="name"></param>
        public void setBezeichnung(String name)
        {
            this.Bezeichnung = name;
        }

        /// <summary>
        /// gibt die Bezeichnung des Proils wieder
        /// </summary>
        /// <returns></returns>
        public String getBezeichnung()
        {
            return this.Bezeichnung;
        }

        /// <summary>
        /// /// </summary>
        /// <param name="d"></param>
        public void setHoeheAbs(Decimal d)
        {
            this.HoeheAbs = d;
        }

        /// <summary>
        /// gibt die absolute Höhe des Profils als Decimal wieder, die einheit ist mm
        /// </summary>
        /// <returns></returns>
        public Decimal getHoeheAbs()
        {
            return this.HoeheAbs;
        }

        /// <summary>
        /// stellt die Tiefe ein, die Angabe erfolgt in mm und bezieht sich auf das Absolut Maß
        /// </summary>
        /// <param name="d"></param>
        public void setTiefeAbs(Decimal d)
        { this.TiefeAbs = d; }

        /// <summary>
        /// gibt die absolute Tiefe des Profils als Decimal wieder, die Einheit ist mm
        /// </summary>
        /// <returns></returns>
        public Decimal getTiefeAbs()
        {
            return this.TiefeAbs;
        }

        /// <summary>
        /// setzt die Verwendungspositon des Profil
        /// </summary>
        /// <param name="list"></param>
        public void setVerwendungposition(List<VerwendungPosition> list)
        {
            this.VerwendungPosition = list;
        }

        public List<VerwendungPosition> getVerwendungsposition()
        {
            return this.VerwendungPosition;

        }
        /// <summary>
        /// Stellt die Option ein auf Rahmen oder Fenster
        /// wobei ja-true= Rahmen
        ///       nein-false=Fenster
        /// </summary>
        /// <param name="b"></param>
        public void setRahmenFenster(bool b)
        {
            this.RahmenFenster = b;
        }
        /// <summary>
        /// gibt die Option ein auf Rahmen oder Fenster
        /// wobei ja-true= Rahmen
        ///       nein-false=Fenster
        /// </summary>
        /// <returns></returns>
        public bool getRahmenFenster()
        {
            return this.RahmenFenster;
        }

        /// <summary>
        /// stellt die Bearbeitungen ein
        /// </summary>
        /// <param name="be"></param>
        public void setBearbeitungen(List<Bearbeitungen> be)
        {
            this.Bearbeitungen = be;
        }
        /// <summary>
        /// gibt die Bearbeitungen als Liste wider
        /// </summary>
        /// <returns></returns>
        public List<Bearbeitungen> getBearbeitungen()
        {
            return this.Bearbeitungen;
        }

        /// <summary>
        /// setzt die Beschichtungen
        /// </summary>
        /// <param name="be"></param>
        public void setBeschichtungen(List<Beschichtungen> be)
        {
            this.Beschichtungen = be;
        }
        /// <summary>
        /// gibt die Besichichtungen wieder, als Liste
        /// </summary>
        /// <returns></returns>
        public List<Beschichtungen> getBeschichtungen()
        {
            return this.Beschichtungen;
        }

        /// <summary>
        /// setzt die Fuellmaterialn
        /// </summary>
        /// <param name="be"></param>
        public void setFuellmaterial(List<Fuellmaterial> be)
        {
            this.Fuellmaterial = be;
        }
        /// <summary>
        /// gibt die Fuellmaterial wieder, als Liste
        /// </summary>
        /// <returns></returns>
        public List<Fuellmaterial> getFuellmaterial()
        {
            return this.Fuellmaterial;
        }

        /// <summary>
        /// setzt die Dichtung
        /// </summary>
        /// <param name="be"></param>
        public void setDichtung(List<Dichtung> be)
        {
            this.Dichtung = be;
        }
        /// <summary>
        /// gibt die Dichtung wieder, als Liste
        /// </summary>
        /// <returns></returns>
        public List<Dichtung> getDichtung()
        {
            return this.Dichtung;
        }

        /// <summary>
        /// setzt die Werkstoff
        /// </summary>
        /// <param name="be"></param>
        public void setWerkstoff(List<Werkstoff> be)
        {
            this.Werkstoff = be;
        }
        /// <summary>
        /// gibt die Werkstoff wieder, als Liste
        /// </summary>
        /// <returns></returns>
        public List<Werkstoff> getWerkstoff()
        {
            return this.Werkstoff;
        }

        /// <summary>
        /// setzt den Kommentar
        /// </summary>
        /// <param name="s"></param>
        public void setKommentar(String s)
        {
            this.Kommentar = s;
        }
        /// <summary>
        /// Gibt den Kommentar als String zurück
        /// </summary>
        /// <returns></returns>
        public String getKommentar()
        {
            return this.Kommentar;
        }

        /// <summary>
        /// setzt ErstelltVon ein
        /// </summary>
        /// <param name="s"></param>
        public void setErstelltVon(Benutzer b)
        {
            this.ErstelltVon = b;
        }
        /// <summary>
        /// Gibt den ErstelltVon als String zurück
        /// </summary>
        /// <returns></returns>
        public Benutzer getErstelltVon()
        {
            return this.ErstelltVon;
        }

        /// <summary>
        /// setzt FreigabeVon ein
        /// </summary>
        /// <param name="s"></param>
        public void setFreigabeVon(Benutzer b)
        {
            this.FreigabeVon = b;
        }
        /// <summary>
        /// Gibt den FreigabeVon als String zurück
        /// </summary>
        /// <returns></returns>
        public Benutzer getFreigabeVon()
        {
            return this.FreigabeVon;
        }


        /// <summary>
        /// Setzt das Erstellungsdatum des Profils ein
        /// </summary>
        /// <param name="dt"></param>
        public void setErstelltWann(DateTime dt)
        {
            this.ErstelltWann = dt;
        }

        /// <summary>
        /// Gibt das Erstellungs Tatum und Zeit Wieder
        /// </summary>
        /// <returns></returns>
        public DateTime getErstelltWann()
        {
            return this.ErstelltWann;
        }
        /// <summary>
        /// Gibt das FreigabeWann Datum und Zeit Wieder
        /// </summary>
        /// <returns></returns>
        public DateTime getFreigabeWann()
        {
            return this.FreigabeWann;
        }

        /// <summary>
        /// Setzt das FreigabeWann des Profils ein
        /// </summary>
        /// <param name="dt"></param>
        public void setFreigabeWann(DateTime dt)
        {
            this.FreigabeWann = dt;
        }


        /// <summary>
        /// Gibt den Status wieder
        /// </summary>
        /// <returns></returns>
        public Status getStatus()
        {
            return this.Status;
        }

        /// <summary>
        /// Setzt den Satus ein
        /// </summary>
        /// <param name="dt"></param>
        public void setStatus(Status status)
        {
            this.Status = status;
        }


      

        /// <summary>
        /// setzt die Restriktion
        /// </summary>
        /// <param name="be"></param>
        public void setRestriktion(List<Restriktion> list)
        {
            this.Restriktion = list;
        }
        /// <summary>
        /// gibt die Restriktion wieder, als Liste
        /// </summary>
        /// <returns></returns>
        public List<Restriktion> getRestriktion()
        {
            return this.Restriktion;
        }




        /// <summary>
        /// setzt den Zeichnung
        /// </summary>
        /// <param name="s"></param>

        public void setZeichnung(DxfModel model)
        {
            this.Zeichnung = model;
        }
        /// <summary>
        /// Gibt den Zeichnung als DXFModel zurück
        /// </summary>
        /// <returns></returns>
        public DxfModel getZeichnung()
        {
            return this.Zeichnung;
        }

        public void setLetzterBenutzer(Benutzer model)
        {
            this.LetzterBearbeiter = model;
        }
        /// <summary>
        /// Gibt den Zeichnung als DXFModel zurück
        /// </summary>
        /// <returns></returns>
        public Benutzer getLetzterBearbeiter()
        {
            return this.LetzterBearbeiter;
        }


























    }


}
